Soru & Cevap

FragmentDialog üzerinde ProgressDialog

23.10.2013 - 02:11

Merhaba,

Uygulamamda bir webservice den gelen verileri fragmentDialog dan extend ettiğim bir activity içindeki listbox a basıyorum. Bu biraz zaman alan bir işlem olduğu için ProgressDialog ile bilgilendirme yapmak istiyorum.

Verileri çektiğim AsyncTask ın onPreExecute fonksiyonunda aşağıdaki gibi .show ettiğimde isShowing true dönüyor ve yine aynı şekilde .show kaldırdığımda isShowing FALSE. 

Görsel kaldırıldı.

Lakin ProgressDialog penceresi ekrana gelmiyor. FragmentDialog kullandığım için bu iki dialog üst üste geliyor diye mi göremiyorum veyahut başka neden göremiyor olabilirim yardımcı olabilir misiniz?

 

14 Görüntülenme

4 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user ismailkaracaoglu
ismailkaracaoglu
24.10.2013 - 03:52

Yasin,

İsimlendirmeler konusunda haklısın aslında daha da kötüsü bunu bilerek halen devam ediyorum :). 
İsimlendirme proje başlangıcında yaptığım bir hata - dikkatsizlik ne dersek diyelim bana pahalıya patladı ve karıştırmamak bir karışıklık yaşamamak adına bu uygulamayı bu şekilde bitirmeyi planlayorum tabi ki bir sonrakinde daha dikkatli olma dersini çıkardıktan sonra :) zaman kısıtım olmasaydı başa dönmek isterdim lakin malum teslim isteniyor. 

Önerilerin için çok teşekkürler yol gösterici oldu benim için.

Dediğin gibi 1. yol çözecek gibi duruyor  :)

 

Profile picture for user yasinkafadar
yasinkafadar
24.10.2013 - 03:25

Selam İsmail,

Öncelikle sana tavsiyem metot ve variable isimlendirmelerine dikkat etmen. Örneğin getFragment'ı görünce benim kafamda direk başka bir şey oluştu. Ama showFragmentDialog gibi bir şey kullansan böyle olmayacaktı. Yani bu benim kişisel görüşüm isimlendirmeler daha iyi olabilir gibi geldi bana :)

Öncelikle senin sorununa 2 farklı çözüm önerim olacak:

1. https://github.com/commonsguy/cwac-endless bu adreste bir tane library ve örnek uygulama var. Senin işini çözer. Liste yüklenmeden önce bir tane listenin başında progress gösteriyor daha sonra itemlar yüklendikten sonra kayboluyor. Ayırca en önemli özelliği kullanıcı alta geldikçe data istemeye devam edip ekranı blocklamıyor.

2. Bence dfportschedule layout xml'inin root layout'unu viewSwitcher yapıp bunun içine 2 tane layout koyman. İlk layout'unun içinde bir tane progress dialog, 2. dialogun içinde ise şu anki mevcut listenin bulunduğu layout olur. Bunu data geldiği zaman switch edip istediğin akışı elde edebilirsin. ViewSwitcher lar konusundsa birçok örnek var internette.  

Bende daha önce seninkine benzer birşey yapmıştım. Duruma göre 1. veya 2. yolu tercih ettim :)

Profile picture for user ismailkaracaoglu
ismailkaracaoglu
24.10.2013 - 12:27

Merhaba Yasin,

Biraz geciktim kusura bakma.

Şöyle anlatmaya çalışayım. Activity üzerindeki butona (btnChoosePort) bastığımda ayrıca bir activity açılmıyor. Popup tarzında DialogFragment ten extend ettiğim DFragmentPort sayfası açılıyor. Webservice den gelen verileri bu bu DFragmentPort ekranında bulunan listeye basıyorum ve kullanıcı seçim yapıyor. 

Kullanıcı listeyi çağırdığı anda webservice in cevabı gecikebiliyor veri çok olduğu zaman bekletiyor. işte bu esna da bir popup açmak istiyorum fakat altta kalıyor. Bu gün göz ile yakalama şansım oldu "Port Progress Start" yazısı açılıyor ardından hemen DFragmentPort ekranı açılıyor ve onu eziyor. Sonuçta ikisi de dialog kontrolü :)

Umarım anlatabilmişim dir:)

UI istersen onları da ekleyebilirim..

 

 

Görsel kaldırıldı.

Profile picture for user yasinkafadar
yasinkafadar
23.10.2013 - 03:38

Selam İsmail,

FragmentDialog'dan activity neden extend ettin ben tam anlamadım. Ayrıca nasıl yaptığını da merak ettim rica etsem yukarıda gönderdiğin kodun yazılı olduğu activity class'ının tamamını gönderebilir misin? 

Activity içinden bir dialog açmaya çalışıyor olabilir misin?

Ya da 

Webservice'den gelen verileri activity içindeki bir listview'da göstermek istiyorsan direk neden AsyncTask'ının onpreexucete ve onpostexecute metodlarında ProgressDialog açıp kapatmadın.

Ayrıca bana göre artık uygulamalarda progressdialog göstererek bütün bir ekranı kitlemek doğru bir yaklaşım olarak gelmiyor. Daha farklı liste doldurma yöntemlerini kullanmak iyi olabilir. Örneğin listenin başında progress görünüyor data yüklenince kayboluyor gibi.